/**
 * 
 */
package com.emode.interceptor;

import org.apache.log4j.Logger;

import com.emode.aop.LoggerAdvice;
import com.emode.entity.Bbsusers;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

/**
 * @author emode
 *
 * 2014年12月20日 下午11:09:32

 */
public class checkePrivilege extends AbstractInterceptor{
	private Logger logger = Logger.getLogger(checkePrivilege.class);
	/**
	 * 
	 */
	private static final long serialVersionUID = -5275431816482415211L;

	/* (non-Javadoc)
	 * @see com.opensymphony.xwork2.interceptor.AbstractInterceptor#intercept(com.opensymphony.xwork2.ActionInvocation)
	 */
	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		//得到当前用户
		Bbsusers user = (Bbsusers) ActionContext.getContext().getSession().get("user");
		//
		String nameSpace = invocation.getProxy().getNamespace();
		String actionName = invocation.getProxy().getActionName();
		String method = invocation.getProxy().getMethod();
		
		
		String privilegeUrl = null;
		if(nameSpace.endsWith("/")){
			privilegeUrl = nameSpace+actionName;
		}else{
			privilegeUrl = nameSpace+"/"+actionName;
		}
		//去掉开头
		if(privilegeUrl.startsWith("/")){
			privilegeUrl = privilegeUrl.substring(1);
			logger.info("privilegeUrl:"+privilegeUrl);
		}
		/*
		 * 当用户没有登录的时候，不能进行admin的操作 不能进行用户设置
		 * 后期会加入对管理员的权限操作，
		 */
		if(user==null){
			System.out.println("----------> 拦截");
			if(privilegeUrl.startsWith("admin")||privilegeUrl.startsWith("group")||privilegeUrl.startsWith("privi")||privilegeUrl.startsWith("sign")){
				return "unlogin";
			}else if(method.startsWith("set")){
				logger.info("----> 对普通用户的拦截"+method);
				return "noprivilege";
			}else{
				logger.info("----->放行");
				return invocation.invoke();
			}
		}else{
			logger.info("----> user 不为空");
			return invocation.invoke();
		}
		
	}

}
